package com.wechat.service;

import java.util.List;

import com.swak.annotation.FluxAsync;
import com.wechat.dto.ChatAddContactsDTO;
import com.wechat.dto.ChatDTO;
import com.wechat.dto.ContactDTO;

/**
 * 描述
 * 
 * @author Auto Generator
 * @date 2022-10-21T23:59:27.243629400
 */
@FluxAsync
public interface ChatService {

	/**
	 * 直取
	 */
	ChatDTO get(String id);

	/**
	 * 锁定记录
	 * 
	 * @param id
	 * @return
	 */
	ChatDTO lock(String id);

	/**
	 * 保存
	 */
	ChatDTO create(ChatDTO chat);

	/**
	 * 创建聊天室
	 * 
	 * @param addContacts
	 * @return
	 */
	ChatDTO create(ChatAddContactsDTO addContacts);

	/**
	 * 创建单聊
	 * 
	 * @param contact
	 * @return
	 */
	ChatDTO create(ContactDTO contact);

	/**
	 * 增长序列号
	 * 
	 * @param chat
	 * @return
	 */
	Long receiveMessage(ChatDTO chat);

	/**
	 * 删除
	 */
	void delete(ChatDTO chat);

	/**
	 * 查询所有的聊天记录
	 * 
	 * @return
	 */
	List<ChatDTO> list();

	/**
	 * 查询未读数量
	 * 
	 * @return
	 */
	Integer unreads();

	/**
	 * 修改 消息 信息
	 * 
	 * lastMsgContent;
	 * lastMsgType;
	 * lastMsgDate;
	 * lastMsgId;
	 * othersAtMe;
	 * msgSequence;
	 * 
	 * @param chat
	 * @return
	 */
	ChatDTO updateMessage(ChatDTO chat);

	/**
	 * 修改 Flag 信息
	 * 
	 * unReadCount;
	 * isTop;
	 * isHide;
	 * isFriend;
	 * isAlert;
	 * isDnn;
	 * isDel;
	 * @param chat
	 * @return
	 */
	ChatDTO updateFlag(ChatDTO chat);

	/**
	 * 同步昵称
	 * 
	 * @param chat
	 */
	void syncNickName(ChatDTO chat);

	/**
	 * 同步是否好友
	 * 
	 * @param chat
	 */
	void syncIsFriend(ChatDTO chat);
}
